package com.base.system.web.dto.menu;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.base.system.jpa.entity.JpaMenu;

import java.util.LinkedList;
import java.util.List;

/**
 * 自定义的mapper映射，本人不喜欢用structmap,老是爱出问题
 */
public class MenuMapper {
    public static MenuDto toDto(JpaMenu menu) {
        MenuDto newMenu = new MenuDto();
        BeanUtil.copyProperties(menu, newMenu);
        newMenu.setParentId(menu.getParent() != null ? menu.getParent().getId() : null);
        if (CollUtil.isNotEmpty(menu.getChildren()))
            for (JpaMenu child : menu.getChildren()) newMenu.getChildrens().add(toDto(child));
        return newMenu;
    }

    public static JpaMenu toEntity(MenuDto menu) {
        JpaMenu newMenu = new JpaMenu();
        BeanUtil.copyProperties(menu, newMenu);
        newMenu.setParent(menu.getParentId() != null ? new JpaMenu().setId(menu.getParentId()) : null);
        return newMenu;
    }

    public static List<MenuDto> toDtos(List<JpaMenu> menus) {
        if (CollUtil.isEmpty(menus)) return null;
        List<MenuDto> menuDtos = new LinkedList<>();
        for (JpaMenu menu : menus) menuDtos.add(toDto(menu));
        return menuDtos;
    }
}
